//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: WIFIDeal.h
//创建人  	: 
//创建日期	:
//描述	    : WIFI模块处理头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    : 
//=============================================================================================
#ifndef __WIFI_DEAL_H__
#define __WIFI_DEAL_H__

//=============================================================================================
//包含头文件
//=============================================================================================
#ifdef __cplusplus
extern "C"
{
#endif

#include "SimCommon.h"
#include "SafeBuf.h"
//#include "BSPSCI.h"
#include "BSP_UART.h"

//=============================================================================================
//宏定义
//=============================================================================================
#define     WIFI_TX_BUF_LEN     64
#define     WIFI_RX_BUF_LEN     512
#define     WIFI_TABLE_LEN      10
#define     WIFI_ONETIME_RETRY  5

#define     WIFI_WAIT_TIMEOUT   5000    //等待超时时间，ms

#define     WIFI_UART_CHANNEL   LPUART1

//=============================================================================================
//数据结构定义
//=============================================================================================
#pragma pack(1)
typedef struct
{
    int RSSI;       /* WIFI 信号强度 */
    u8 BSSID[6];    /* WIFI 网卡 MAC 地址 */  
}t_WIFI_Coor;
#pragma pack()

/* WIFI处理信息结构体 */
typedef struct
{
    u32 StartTimer;                 /* 接收超时时间 */
    u32 TimeOut;                    /* 通信超时时间 */
    SafeBuf RxSafeBuff;
    union
	{
		struct
		{
			u8 Isfull    :1;	/* 是否buff满 */
			u8 IsReset   :1;	/* wifi模块是否重新启动 */
            u8 IsUpdInfo :1;    /* 是否扫描刷新过数据 */
			u8 RVSD      :5; //保留
		}WifiFlagBit;
		u8 WifiFlagByte;
	}WifiFlag;
    
    u8 Wslen;
    int RecLen;                         /* 接收数据长度 */
    u8 RecdataBuff[WIFI_RX_BUF_LEN];	/* 接收数据缓存 */
    u8 DealdataBuff[WIFI_RX_BUF_LEN];	/* 处理数据缓存 */
    u8 WifiInfolen;                     /* WIFI有效数据长度 */
    t_WIFI_Coor WifiCoor[WIFI_TABLE_LEN]; /* WIFI数据存储结构体 */
}t_WIFI_MSG;

//WIFI接收的信息拆解
typedef struct _WifiInfo
{
	char* SSID;
	char* PSK_Type;
	char* RSSI;
	char* BSSID;
	char* Channel;
}WifiInfo;

typedef struct _BssidInfo
{
	char* Bssid0;      
	char* Bssid1;
 	char* Bssid2;
	char* Bssid3;
	char* Bssid4;
	char* Bssid5;
}BssidInfo;

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================
extern t_WIFI_MSG gWifiDealMsg;
extern Queue_old gWifiCoorQueue;

//=============================================================================================
//声明接口函数
//=============================================================================================
//=============================================================================================
//函数名称  : void WifiDealInit(void)
//输入参数  : void
//输出参数  : void
//函数功能  : WIFI处理初始化
//注意事项	:
//=============================================================================================
void WifiDealInit(void);

//=============================================================================================
//函数名称  : void WifiRxByte(uint8 data)
//输入参数  : data:写入的数
//输出参数  : void
//函数功能  : WIFI接收数据到接收缓存中
//注意事项	:
//=============================================================================================
void WifiRxByte(uint8 data);

//=============================================================================================
//函数名称  : u8 WifiDealGetCoors(uint8* pBuf)
//输入参数  : void
//输出参数  : void
//函数功能  : 获取WIFI MAC地址点，出队列，放在pbuf中
//注意事项	:
//=============================================================================================
u8 WifiDealGetCoors(uint8* pBuf);

//=============================================================================================
//函数名称	: void WifiDealMainTask(void *p)
//输入参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: WIFI处理主任务函数
//注    意	:
//=============================================================================================
void WifiDealMainTask(void *p);

#ifdef __cplusplus
}
#endif

#endif

/*****************************************end of WIFIDeal.h*****************************************/
